/**
 * @param {number[]} nums
 * @return {number}
 */
var missingNumber = function(nums) {
    nums.sort((a,b) => {return a-b})
    // return nums
    // let map = new Map()
    // for (let i = 0; i< nums.length; i++) {
    //     map.set(nums[i], i)
    // }
    for (let i = 0; i< nums.length; i++) {
        if (nums[i] != i) {
            return i
        }
    }
        // 数字丢失在末尾
        if (nums[nums.length - 1] != nums.length ) {
            return nums.length
        }
        // 数字丢失在首位
        if (nums[0] != 0) {
            return 0
        }
};
// 位运算的解法
/*
异或： 一个数字和0 做运算就等于其本身 一个数和其本身做运算就等于0  异或运算满足交换律和结合律
* */
var missingNumber = function(nums) {
    let len = nums.length;
    for (let i = 0; i < nums.length; i++) {
        len ^= i ^ nums[i];
        // hello
    }
    return len
}
let nums = [ 0,3,4, 1]
console.log(missingNumber(nums))